উদাহরণ সহ Form-Based Authentication

Java Technologies - স্প্রিং সিকিউরিটি (Spring Security) - Spring Security এর Form-Based Authentication
203

Form-Based Authentication হলো Spring Security-তে একটি জনপ্রিয় Authentication প্রক্রিয়া, যেখানে ব্যবহারকারী একটি কাস্টম লগইন ফর্ম ব্যবহার করে অ্যাপ্লিকেশনে লগইন করতে পারে। এটি REST API এবং Web Applications উভয়ের জন্য প্রযোজ্য।


Form-Based Authentication সেটআপ করার ধাপসমূহ:


Step 1: প্রজেক্ট তৈরি

Maven ডিপেনডেন্সি:

<dependencies>
    <!-- Spring Web -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <!-- Spring Security -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
    </dependency>

    <!-- Thymeleaf (ফর্ম টেম্পলেটের জন্য) -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>
</dependencies>

Step 2: Spring Security Configuration

@EnableWebSecurity ব্যবহার করে কাস্টম কনফিগারেশন তৈরি করুন।

SecurityConfig ক্লাস:

import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            .csrf().disable()
            .authorizeRequests()
            .antMatchers("/login", "/resources/**", "/css/**").permitAll() // Login পেজ এবং স্ট্যাটিক ফাইল ফ্রি
            .anyRequest().authenticated() // অন্য সব রিকোয়েস্ট প্রোটেক্টেড
            .and()
            .formLogin()
            .loginPage("/login") // Custom login পেজ
            .defaultSuccessUrl("/home", true) // লগইন সফল হলে
            .permitAll()
            .and()
            .logout()
            .logoutUrl("/logout")
            .logoutSuccessUrl("/login?logout")
            .permitAll();
    }

    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.inMemoryAuthentication()
            .withUser("user")
            .password("{noop}password") // No password encoding (development only)
            .roles("USER")
            .and()
            .withUser("admin")
            .password("{noop}admin")
            .roles("ADMIN");
    }
}

Step 3: কাস্টম লগইন পেজ তৈরি

Spring Boot ডিফল্ট লগইন ফর্ম ব্যবহার না করে কাস্টম লগইন পেজ ব্যবহার করা হবে।

login.html (Thymeleaf Template):

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>Login</title>
</head>
<body>
    <h1>Login Page</h1>
    <form th:action="@{/login}" method="post">
        <div>
            <label for="username">Username:</label>
            <input type="text" id="username" name="username" required>
        </div>
        <div>
            <label for="password">Password:</label>
            <input type="password" id="password" name="password" required>
        </div>
        <div>
            <button type="submit">Login</button>
        </div>
    </form>
    <p th:if="${param.error}">Invalid username or password</p>
    <p th:if="${param.logout}">You have been logged out</p>
</body>
</html>

Step 4: হোম পেজ তৈরি

লগইন সফল হলে ব্যবহারকারীকে /home রিডাইরেক্ট করা হবে।

home.html (Thymeleaf Template):

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>Home</title>
</head>
<body>
    <h1>Welcome to Home Page!</h1>
    <p>You are successfully logged in.</p>
    <form th:action="@{/logout}" method="post">
        <button type="submit">Logout</button>
    </form>
</body>
</html>

Step 5: Controller তৈরি

Spring MVC কন্ট্রোলার ব্যবহার করে /login এবং /home পেজ পরিচালনা করা হবে।

LoginController:

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class LoginController {

    @GetMapping("/login")
    public String login() {
        return "login"; // login.html টেম্পলেট রিটার্ন করবে
    }

    @GetMapping("/home")
    public String home() {
        return "home"; // home.html টেম্পলেট রিটার্ন করবে
    }
}

Step 6: Static Resources (CSS ফাইল যুক্ত করা)

style.css:

body {
    font-family: Arial, sans-serif;
    margin: 20px;
}

form {
    margin-top: 20px;
}

button {
    background-color: #4CAF50;
    color: white;
    padding: 10px 20px;
    border: none;
    cursor: pointer;
}

button:hover {
    background-color: #45a049;
}

স্ট্যাটিক ফাইলের জন্য:

ফাইলটি src/main/resources/static/css/style.css এ রাখুন।


Step 7: অ্যাপ্লিকেশন চালু করুন

  1. অ্যাপ চালু করুন:

    mvn spring-boot:run
    
  2. অ্যাক্সেস URL:
    • লগইন পেজ: http://localhost:8080/login
    • লগইন করার জন্য:
      • Username: user
      • Password: password

Spring Security Workflow:

  1. /login রিকোয়েস্ট করলে কাস্টম লগইন পেজ দেখা যাবে।
  2. সঠিক ইউজারনেম এবং পাসওয়ার্ড দিয়ে লগইন করলে /home এ রিডাইরেক্ট হবে।
  3. লগআউট করার জন্য /logout রিকোয়েস্ট করলে /login?logout পেজে রিডাইরেক্ট হবে।

উপসংহার:

এই উদাহরণটি একটি মৌলিক Spring Security প্রজেক্টের কাস্টম Form-Based Authentication কনফিগারেশন প্রদর্শন করে। এটি Spring Security-এর আরও উন্নত বৈশিষ্ট্য যেমন ডাটাবেস-ভিত্তিক Authentication, OAuth2 Integration, এবং JWT এর মতো ফিচার শেখার জন্য একটি ভিত্তি হিসেবে কাজ করবে।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...